//
//  TestTimer.m
//  helloworld
//
//  Created by didi on 03/06/2024.
//

#import "TestTimer.h"
#import "MyObject.h"
#import "ThreadPool.h"

@interface TestTimer ()
@property (nonatomic, strong) NSTimer *timer;
@property (nonatomic, copy) NSString *name; // 假设你有一个name属性
+ (void)testColorClass;
+ (void)testArrayClass;
+ (void)testThreadPool;
@end
  
@implementation TestTimer

- (void)setName:(NSString *)name {
    _name = [name copy]; // 使用copy属性来确保字符串的不可变性
}

- (void)startTimerWithName:(NSString *)name {
    self.name = name; // 设置实例变量的name属性
    if (!_timer) {
        // 使用name创建一个userInfo字典
        NSDictionary *userInfo = @{@"name": name};
        _timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                  target:self
                                                selector:@selector(printCurrentTime)
                                                userInfo:userInfo
                                                 repeats:YES];
        [[NSRunLoop currentRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];
    }
}
  
- (void)stopTimer {
    if (_timer) {
        [_timer invalidate];
        _timer = nil;
    }
}
  
- (void)printCurrentTime {
    // 如果需要，可以从userInfo中获取name（但通常直接从实例变量获取）
    // NSDictionary *userInfo = [self.timer userInfo];
    // NSString *name = userInfo[@"name"];
    
    // 直接从实例变量获取name
    NSString *name = self.name;
    
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *currentTime = [dateFormatter stringFromDate:[NSDate date]];
    NSLog(@"Current Time: %@, Name: %@", currentTime,name);
    
    [TestTimer testColorClass];
    [TestTimer testArrayClass];
    [TestTimer testThreadPool];
}

+ (void) testColorClass{
    // 创建MyObject的实例
    // MyObject *myObject = [[MyObject alloc] init];
    MyObject * myObject = [MyObject new];

    // 调用setColorToRed:green:blue:方法来设置颜色
    [myObject setColorToRed:1.0 green:0.0 blue:0.0]; // 设置为红色

    // 调用displayColor方法来显示颜色
    [myObject displayColor]; // 输出：Color: RGB(1.000000, 0.000000, 0.000000)

    // 继续设置其他颜色
    [myObject setColorToRed:0.0 green:1.0 blue:0.0]; // 设置为绿色
    [myObject displayColor]; // 输出：Color: RGB(0.000000, 1.000000, 0.000000)

    // 释放myObject实例（在ARC环境下，这一步是自动的）
    // [myObject release]; // 如果不是ARC环境，需要手动释放
}



+ (void) testArrayClass{
    // 创建MyAppObject的实例
    TestObject *myAppObject = [[TestObject alloc] init];
      
    // 获取数组
    NSMutableArray *array = [myAppObject getArray];
      
    // 输出原始数组
    NSLog(@"Original array: %@", array);
      
    // 获取要插入的对象
    id objectToInsert = [myAppObject getObjectToInsert];
      
    // 将对象插入到数组的开头（索引0）
//    [array insertObject:objectToInsert atIndex:0];
    [[myAppObject getArray] insertObject: [myAppObject getObjectToInsert] atIndex:0];
    
      
    // 输出修改后的数组
    NSLog(@"Array after insertion: %@", array);
}

+ (void) testThreadPool{
    // 创建一个线程池，大小为4
     ThreadPool *threadPool = [[ThreadPool alloc] initWithSize:4];
     
     // 提交多个任务到线程池
     for (int i = 0; i < 10; i++) {
         [threadPool execute:^{
             NSLog(@"Task %d is running on thread %@", i, [NSThread currentThread]);
             [NSThread sleepForTimeInterval:1]; // 模拟任务执行时间
         }];
     }
     
     // 等待一段时间以确保所有任务完成
     [NSThread sleepForTimeInterval:5];
     
     // 关闭线程池
     [threadPool shutdown];
}
@end

